package com.xiyun.common.oss;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

public class OSSUtils {

    /**
     *
     * @param file  传来的课程封面图片
     * @return  返回课程封面url
     */
    public static String uploadIcon(MultipartFile file){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "LTAI4Fzj7vjd5eJL4G2E1DUP";
        String accessKeySecret = "7zslEW6IlIkI3QIceU6T2XOw3G6n3u";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        String[] strings = file.getOriginalFilename().split("\\.");
        String format = new SimpleDateFormat("yy-MM-dd").format(new Date());
        String fileName = "Cover/" + format + "/" + UUID.randomUUID().toString().replaceAll("-","").toUpperCase() + "." + strings[strings.length - 1];
        // 上传文件流。
        // InputStream inputStream = new FileInputStream("<yourlocalFile>");
        // ossClient.putObject("<yourBucketName>", "<yourObjectName>", inputStream);

        try {
            ossClient.putObject("xiyun-online-education",fileName,file.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }


        // 如果需要上传时设置存储类型与访问权限，请参考以下示例代码。
        // ObjectMetadata metadata = new ObjectMetadata();
        // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
        // metadata.setObjectAcl(CannedAccessControlList.Private);
        // putObjectRequest.setMetadata(metadata);

        // 关闭OSSClient。
        ossClient.shutdown();

        return "https://xiyun-online-education.oss-cn-hangzhou.aliyuncs.com/" + fileName;
    }
}
